History Tools Starter Kit
Source
The History Tools Starter Kit is a robust package that implements the components of History Tools with dependencies such as MongoDB and eosjs. This inclusive package contains file dependencies for each process, namely: bootstrap, reader, filter, and processor.
Additionally, it encompasses data layer implementations for common components such as Abis, BlockRangeScanner, BlockState, Ship etc., which are integral to the mentioned above processes. The History Tools package contains the logic and domain layer implementation, while this Starter Kit presents the data layer implementation.
Essentially, the History Tools Starter Kit equips you with a ready-to-use framework for leveraging the power of History Tools. While History Tools can be employed with other dependencies, this Starter Kit offers a seamless experience for those seeking to utilize MongoDB
and eosjs
. Therefore, if your project necessitates these dependencies, this Starter Kit is your ideal starting point.
Dependencies
This package is dependent on the following packages:
Table of Contents
Installation
To add History Tools to your project, use the following command with your favorite package manager:
yarn add @alien-worlds/history-tools-starter-kit
Common Components
In the Common folder you will find all data layer implementations related to MongoDB collections or eosjs tools. This includes mappers for transforming documents to entities and vice versa, service implementations, and various types. These resources are conveniently available for direct use when creating the components for your project.
To further enhance ease-of-use, this package provides creators
that take the heavy lifting out of creating an instance of each component. The creators
automate the construction process, resulting in an efficient and streamlined development experience. The specific list of available creators
:
AbisCreator
BlockRangeScanner
BlockReaderCreator
BlockStateCreator
BlockchainServiceCreator
FeaturedContractsCreator
ProcessortaskQueueCreator
ShipAbisCreator
UnprocessedBlockQueueCreator
The use of these creators is very simple, just call the static create method and provide the expected arguments
// An example of creating an instance of the UnprocessedBlockQueue using a dedicated creator
const unprocessedBlockQueue = await UnprocessedBlockQueueCreator.create(
mongoSource,
{ ...config }
);
More information about individual components can be found in this repository @alien-worlds/aw-history.
Processes
The remaining folders name correspond to the history tools processes and contain the necessary dependencies files. These files contain Dependencies classes that are initialized within the process or worker loader of the process.
-
Bootstrap: Requires
DefaultBootstrapDependencies
passed to the bootstrap command. Dependencies:BroadcastClient
Abis
BlockRangeScanner
FeaturedContracts
BlockState
BlockchainService
-
Reader: Requires
DefaultReaderDependencies
passed to the reader command. Dependencies:BroadcastClient
BlockRangeScanner
The second file is
ReaderWorkerLoaderDependencies
which is instantiated in the worker loader and the path to this file is given inDefaultReaderDependencies
. Dependencies:BlockRangeScanner
BlockReader
BlockState
UnprocessedBlockQueue
-
Filter: Requires
DefaultFilterDependencies
passed to the filter command. Dependencies:BroadcastClient
UnprocessedBlockQueue
The second file is
FilterWorkerLoaderDependencies
which is instantiated in the worker loader and the path to this file is given inDefaultFilterDependencies
. Dependencies:ProcessorTaskQueue
Abis
ShipAbis
FeaturedContracts
AntelopeSerializer
-
Processor: Requires
DefaultProcessorDependencies
passed to the processor command. Dependencies:BroadcastClient
ProcessorTaskQueue
Featured<ContractTraceMatchCriteria>
Featured<ContractDeltaMatchCriteria>
The second file is
ProcessorWorkerLoaderDependencies
which is instantiated in the worker loader and the path to this file is given inDefaultProcessorDependencies
. Dependencies:MongoSource
AntelopeSerializer
Tutorials
Contributing
We welcome contributions from the community. Before contributing, please read through the existing issues on this repository to prevent duplicate submissions. New feature requests and bug reports can be submitted as an issue. If you would like to contribute code, please open a pull request.